#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//#include<string>
//#include<vector>
//using namespace std;
//class Solution {
//public:
//    string multiply(string num1, string num2) {
//        vector<int> v1, v2, v3;
//        for (int i = num1.size()-1; i >= 0; i--) {
//            v1.push_back(num1[i] - '0');
//        }
//        for (int i = num2.size()-1; i >= 0; i--) {
//            v2.push_back(num2[i] - '0');
//        }
//
//
//        v3.resize(v1.size()+v2.size());
//        for (int i = 0; i < v1.size();i++) {
//            for (int j = 0; j < v2.size(); j++) {
//                v3[i + j] += v1[i] * v2[j];
//                v3[i + j + 1] += v3[i + j] / 10;
//                v3[i + j] %= 10;
//            }
//        }
//
//        string num3;
//        for (int i = v3.size() - 1; i >= 0; i--) {
//            num3.push_back(v3[i] + '0');
//        }
//        while (num3.front() == '0'&&num3.size()>=2) {
//            num3.erase(0, 1);
//        }
//
//        return num3;
//    }
//};
//int main() {
//    string n1("123");
//    string n2("456");
//    Solution s;
//    cout << s.multiply(n1, n2) << endl;
//}

//#include<iostream>
//#include<string>
//using namespace std;
//int main() {
//    string s;
//    getline(cin, s);
//    size_t find = s.find_last_of(' ');
//    if (find == string::npos) {
//        cout << s.size(); 
//    }
//    else {
//        cout << s.size() - find - 1;
//    }
//
//    return 0;
//}

//class Solution {
//public:
//    string reverseStr(string s, int k) {
//        int i = 0;
//        while (i< s.size()-1) {
//            if(i+k<=s.size())
//                reverse(s.begin() + i, s.begin() + i +k);
//            else 
//                reverse(s.begin() + i, s.end());
//            i+=2*k;
//        }
//        return s;
//    }
//};
//
//int main() {
//    string s;
//    int k;
//    cin >> s >> k;
//    Solution S;
//    cout << S.reverseStr(s, k);
//}

//class Solution {
//public:
//    string reverseWords(string s) {
//        size_t pre = 0, pos = 0;
//        while (1) {
//            pos = s.find(' ', pre);
//            if (pos == string::npos) {
//                reverse(s.begin() + pre, s.end());
//                break;
//            }
//            reverse(s.begin() + pre, s.begin() + pos);
//            pre = pos + 1;
//        }
//        return s;
//    }
//};
//int main() {
//    string s;
//    getline(cin, s);
//    Solution S;
//    cout << S.reverseWords(s);
//}
//class string
//{
//public:
//	string(const char* str) {
//		int size = 0;
//		for (int i = 0; str[i] != '\0'; i++){
//			size++;
//		}
//		_str = new char[size+1];
//		for (int i = 0; str[i-1] != '\0'; i++) {
//			_str[i] = str[i];
//		}
//	}
//	string(const string& s) {
//		int size = 0;
//		for (int i = 0; s._str[i] != '\0'; i++) {
//			size++;
//		}
//		_str = new char[size+1];
//		for (int i = 0; s._str[i-1] != '\0'; i++) {
//			_str[i] = s._str[i];
//		}
//	}
//	string& operator=(const string& s) {
//		int size = 0;
//		for (int i = 0; s._str[i] != '\0'; i++) {
//			size++;
//		}
//		_str = new char[size+1];
//		for (int i = 0; s._str[i-1] != '\0'; i++) {
//			_str[i] = s._str[i];
//		}
//		return *this;
//	}
//	~string() {
//		delete[] _str;
//	}
//private:
//	char* _str;
//};
//int main() {
//	char a[] = "abcd";
//	string s1(a);
//	string s2(s1);
//	string s3 = s2;
//	string s4 = s1;
//	s4.~s4();
//}